#ifndef WEATHERTOOL_H
#define WEATHERTOOL_H

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QJsonParseError>
#include <map>
#include <QFile>
#include <QCoreApplication>
#include <QDebug>
class WeatherTool
{
public:
    WeatherTool()
    {
        //获取当前程序运行的路径
        QString fileName=QCoreApplication::applicationDirPath();
        //创建错误信息收集的对象
        QJsonParseError err;
        //构建文件所在的路径。因为 json文件  在项目文件夹下
        fileName+="/../../ClownWeather/citycode-2019-08-23.json";
        QFile file(fileName);
        //打开文件
        file.open(QIODevice::ReadOnly|QIODevice::Text);
        QByteArray json=file.readAll();
        file.close();
        //读取json数据
        QJsonDocument jsonDoc= QJsonDocument::fromJson(json,&err);
        //获取城市列表数组
        QJsonArray cityts=jsonDoc.array();
        for(int i=0;i<cityts.size();i++)
        {
            QString code=cityts.at(i).toObject().value("city_code").toString();
            QString city=cityts.at(i).toObject().value("city_name").toString();
            //省份的code 是空的  所以城市代码长度大于0的都可以添加的map中
            if(code.size()>0)
            {
                m_mapCity2Code.insert(std::pair<QString,QString>(city,code));
            }
        }
    }
    //重载操作符[“city”]。根据城市名称直接得到城市代码：
    QString operator[](const QString& city)
    {
        std::map<QString,QString>::iterator it=m_mapCity2Code.find(city);

        if(it==m_mapCity2Code.end())
        {
            //搜索城市后戴市字
            it = m_mapCity2Code.find(city+"市 ");
        }
        if(it==m_mapCity2Code.end())
        {
            //搜索城市后戴县字
            it = m_mapCity2Code.find(city+"县 ");
        }
        if(it!=m_mapCity2Code.end())
        {
          return it->second;
        }
        return "000000000";
    }

private:
    std::map<QString,QString> m_mapCity2Code;
};
#endif // WEATHERTOOL_H
